A wireless multihop communications network, such as a mesh network, includes a set of nodes capable of exchanging messages with one another over a wireless medium, typically using radio frequency (RF) airwaves. Each of the nodes can be primarily a communications device or, alternatively, the communications functionality may be secondary to its primary function. For example, in a given node, the communications circuitry can be a part of a device such as a computer system, a smart appliance, a vehicle, a media device, a piece of industrial equipment (e.g., an instrument, machine, sensor, actuator), and the like. In a mesh architecture the nodes are uniquely addressable, and able to route messages from an originating node toward the intended destination node. In general, each of the nodes can be an originating and destination node as well. Thus, nodes perform both, message forwarding, and message origination/consumption functions. This means that the communication channels can be quite busy at certain parts of the network where the message density is relatively higher than at other parts.
In addition, wireless networks in particular face other challenges. For instance, wireless links may not always be reliable: there may be intermittent interfering signals, intermittent obstructions, including large movable objects (e.g., vehicles) moving in and out of the transmission path, weather affecting the quality of radio signal propagation, etc., affecting the signal strength of transmissions seen by the receiving node. Also, certain nodes may be situated near the limits of their radio's communication range, which further compounds signal reception challenges. Elsewhere in the network, there may be a high density of devices within communication range, which results in overlapping transmissions on common channels (i.e., collisions). In noisy or otherwise error-prone communication environments, the data rate may need to be reduced to reduce the error rate. However, this results in longer-duration messages, thereby increasing the collision rate. Communications received with errors detected therein must be re-transmitted, which uses additional communication overhead in the system.
These basic challenges come into play further when the node devices of wireless mesh networks receive software upgrades from time-to-time. Software upgrades include newer versions of the system software, or firmware, which involves distributing large files of program code to multiple devices over the communications channels. This further burdens the communications capacity of the mesh network, especially given the volume of data that is transferred to each device.
In homogeneous networks where there the node devices are all of one common type, it is accepted that the software upgrades are a necessary load, and a network of this type spreads the software upgrade to every device throughout the network. In networks having more than one type of node device, referred to heterogeneous networks, different types of node devices require correspondingly different types of software, each with its own independent updating schedule.
Distributing software throughout the network to different devices presents its own challenges. Simply distributing a particular type software to every node device throughout the heterogeneous network, as would be done in a homogeneous network, wastes resources in transmitting and that software to node devices of an incompatible type. Software upgrades of a certain type can be sent by a distribution node addressed to individual devices requiring that type of software in point-to-point fashion; however, in a multi-hop mesh network, this means transmitting the large amount of data, each time, through devices situated along a routing path between the distribution node and the destination nodes. This avoids having to distribute a software upgrade to devices that do not use that type of software, but it still involves wasteful duplication of transmission through certain parts of the mesh network. Also, such software upgrades would generally be controlled by some centralized upgrade server node having a specialized process or database with knowledge of the network topology and the current characteristics of each node, which requires additional resources in setup and management. Also, such a centralized approach may not always be practical in certain networks that use distributed routing schemes.
Another approach that has been used is to operate node devices of different types as co-located but independent homogeneous networks. Software upgrades are thus distributed to all devices of each independent homogeneous network. One limitation with this approach is that all nodes of such independent homogeneous networks must be within communication range of other nodes of the same type so that each node can receive upgrades from its neighbor. Put another way, a node could never be isolated from other nodes of the same type. In networks where this condition cannot be met, each isolated pocket of one or more nodes must be seeded with a software upgrade each time the software is revised. As node devices can be added to, or moved around in, the network, management of software upgrades can become increasingly difficult.
A solution is therefore needed that avoids one or more of the problems outlined above, while providing effective and efficient software upgrading in heterogeneous wireless mesh networks.